Logo (程式語言)
来自维基百科,自由的百科全书
Logo是一種電腦程式設計語言,在1966年由西摩爾·派普特和Wally Feurzeig設計[2],Logo一詞源自希臘語邏各斯(logos)。Logo是一種直譯語言,和其他語言不同的是,它內建一套海龜繪圖(Turtle Graphics)系統[3],通過向海龜傳送命令,用戶可以直觀地學習程式的執行過程,因此很適於初學者特別是兒童學習程式設計。
![]() MSWLogo海龜繪圖範例gif動畫[1] | |
編程範型 | 多範式: 函數式, 教育, 程序式, 反射式 |
---|---|
語言家族 | Lisp |
設計者 | Wally Feurzeig, Seymour Papert, Cynthia Solomon |
實作者 | Bolt, Beranek and Newman |
釋出時間 | 1967年 |
型態系統 | 動態 |
主要實作產品 | |
UCBLogo, 很多其他實現 | |
衍生副語言 | |
StarLogo, NetLogo, AppleLogo | |
啟發語言 | |
Lisp | |
影響語言 | |
AgentSheets, NetLogo, Smalltalk, Etoys, Scratch, Microsoft Small Basic, KTurtle, REBOL, Boxer |
Logo的原型來自另一個電腦語言LISP[4],派普特修改了LISP的語法使其更易於閱讀。Logo常被稱作沒有括號的Lisp。Logo繼承了Lisp的「表」的概念,所以在函數處理等方面擁有強大的能力,也是有特殊需求的電腦科學家的好幫手[5]。
海龜繪圖

海龜繪圖使得Logo用戶可以通過簡單的編程創作出豐富多彩的視覺效果或圖案。假想一隻帶着畫筆的海龜可以接受簡單的命令,例如向前走100步,或者左轉30度。通過對這隻海龜傳送命令,可以讓它繪製出較為複雜的圖形,例如正方形、三角形、圓等。
海龜的移動相對於它本身所在的位置。例如,命令LT 90
意味着讓海龜左轉90度,站在海龜的角度來思考它將如何執行命令,使得程式設計更加形象化,也更易於理解。
程式實例
設計Logo的初衷是為了向兒童教授電腦編程技能。它亦適合用作數學教學。初學者可以不需要任何程式設計的知識而直接向海龜傳送命令。學習海龜作圖將會讓用戶懂得一些關於幾何學方面的知識。而一旦掌握了海龜作圖的基礎之後,引入程式設計的概念也變得更加容易。下面看一個畫一個正方形的例子:
FD 100
LT 90
FD 100
LT 90
FD 100
LT 90
FD 100
LT 90
FD
是前進,LT
是左轉。由於輸入的陳述式都是重複的,可以用重複陳述式簡化為:
REPEAT 4 [FD 100 LEFT 90]
上面兩段程式得到的結果相同,由於第一個程式幾乎都是重複代碼,因此我們用REPEAT
讓Logo重複同樣的命令4次,同時還使用了命令的縮寫。為了重複使用上述代碼,我們可以用TO …… END
定義過程:
TO CHAIR
REPEAT 4 [FD 100 RT 90] FD 200
END
一旦定義了CHAIR
過程,就可以直接使用呼叫它得到結果,為了使得這個過程更加通用化,我們傳遞一個邊長參數:
TO CHAIR :long
REPEAT 4 [FD :long RT 90]
FD :long*2
END
CHAIR 100
從簡單地傳送繪圖命令,到定義一個通用的繪製多邊形的過程,用戶不但掌握了程式設計上的一些基本思想(傳遞參數、重複等),而且對幾何學上正多邊形的理解也加深了。
多代理建模語言
Logo的方言NetLogo、StarLogo進一步深化了Logo的海龜繪圖概念,可以產生出成百上千個獨立的海龜(被稱為代理)來模擬諸如物理、生物或社會等複雜系統。建模者可以對眾多海龜並列傳送指令,來觀察微觀個體行為與個體之間相互影響產生的宏觀樣式之間的聯絡。
LOGO直譯器列表
- UCBLogo,又叫Berkeley Logo[6],用C語言寫成,可運行於多個平台。
- MSWLogo,有良好的GUI、詳盡的說明文件,運行於Windows,建基於Berkeley Logo,由Borland C++寫成。它支援三維圖像、聲響、鍵盤等多個功能[7]。
- StarLogo[8]
- NetLogo[9]
- Comenius Logo[10]
- rLogo[11],可於瀏覽器上執行(需Java)
- CLogo[12],可用中文為指令(需要Java)
- Galapago[13],用Java寫成
- ProLOGO[14],用Prolog寫成,可用意大利語為指令
- PyLogo[15],用Python寫成
- SharpLOGO[16],用C#寫成
- XLogo[17],用Objective-C寫成,運行於macOS
- Logo++[18],可說是一種精簡化的Logo,主要的分別在於沒有了Logo的即時回應(interactive)、去掉了不少語法。
參照
延伸閱讀
外部連結
Wikiwand - on
Seamless Wikipedia browsing. On steroids.